package com.chang.dp.utils;

import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class EpubUtil {

    public static Document getDocument(String domStr) {
        Document document = Jsoup.parse(domStr);
        return document;
    }
    public static String getTitle (Document document) {
        // 使用Jsoup解析，取dom中的title、h1、h2、h3的内容

        String title = document.select("title").text();
        String h1 = document.select("h1").text();
        String h2 = document.select("h2").text();
        String h3 = document.select("h3").text();
        if (StringUtils.isNotEmpty(title) && !"未知".equals(title)) return title;
        if (StringUtils.isNotEmpty(h1)) return h1;
        if (StringUtils.isNotEmpty(h2)) return h2;
        if (StringUtils.isNotEmpty(h3)) return h3;
        return "";
    }

    public static String getSubject(Document document) {
        String text = document.body().text();
        if (text.length() > 50)
            text = text.substring(0, 50);
        return text;
    }
    public static void saveImage(InputStream imageInputStream, String uploadPath, String fileName) {
        // 首先判断uploadPath是否为空，如果为空则直接返回，无法进行保存操作
        if (StringUtils.isEmpty(uploadPath)) {
            return;
        }

        try {
            // 创建目标文件对象，根据uploadPath路径和从输入流中获取的图片文件名（此处简单示例获取文件名逻辑）
            File outputFile = new File(uploadPath + fileName);
            // 创建文件输出流，用于将输入流中的数据写入到文件中
            FileOutputStream outputStream = new FileOutputStream(outputFile);

            byte[] buffer = new byte[1024];
            int bytesRead;
            // 从输入流读取数据到缓冲区，并将缓冲区的数据写入到文件输出流中，循环直到读取完所有数据
            while ((bytesRead = imageInputStream.read(buffer))!= -1) {
                outputStream.write(buffer, 0, bytesRead);
            }

            // 关闭文件输出流和输入流，释放资源
            outputStream.close();
            imageInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            // 可以考虑在这里添加更完善的日志记录，比如记录错误信息到日志文件等，方便排查问题
        }
    }

    private static String getFileNameFromInputStream(InputStream inputStream) {
        // 简单示例获取文件名逻辑，这里假设输入流对应的图片文件名在最后部分（比如URL中最后部分就是文件名情况）
        // 实际应用中可能需要更准确的解析，比如从请求头或者文件元数据等获取准确文件名
        String path = inputStream.toString();
        int lastIndex = path.lastIndexOf('/');
        if (lastIndex == -1) {
            lastIndex = path.lastIndexOf('\\');
        }
        return path.substring(lastIndex + 1);
    }
}
